Monografias.com > Sin categoría
Descargar Imprimir Comentar Ver trabajos relacionados

Programación con Paso de Mensajes (MPI) (página 2)




Enviado por Pablo Turmero



Partes: 1, 2, 3, 4

Monografias.com
MPIIntroducción. Taxonomías
Una taxonomía es un modelo basado en un conjunto de características que provee una información condensada que es útil cuando se comparan cosas.

La taxonmía más famosa en cómputo paralelo es la de Flynn que se basa en el flujo de información (instrucciones y datos) en una computadora.
Esta información solo tiene dos valores: uno(single) o varios(multiple).
Instruction stream: se refiere a la progresión de instrucciones que se ejecutan en la computadora.
Data stream: se refiere a la progresión de los valores de los datos que son llevados a la memoria del CPU.

Monografias.com
MPIIntroducción. Taxonomía de Flynn
Taxonomía de Flynn
SISD (Single Instruction, Single Data) : Computadora de von Neumann.
SIMD (Single Instruction, Multiple Data) : En estas computadoras se aplica una instrucción a un grupo de datos simultáneamente.
MISD (Multiple Instruction, Single Data) : Ningún tipo de arquitectura cae dentro de este tipo.
MIMD (Multiple Instruction, Multiple Data) : Los procesadores obedecen automáticamente sus propias secuencias de instrucciones y las aplican a sus propios datos.

Monografias.com
MPIIntroducción. Taxonomía de Flynn
Flujo de información

Monografias.com
MPIIntroducción. Taxonomía de Flynn
Memoria

Monografias.com
MPIIntroducción. Taxonomía de Flynn
Memoria y procesadores

Monografias.com
MPIIntroducción. ¿Qué es MPI?
Biblioteca estándar para programación paralela bajo el paradigma de comunicación de procesos mediante pasaje de mensajes.

Biblioteca, no lenguaje. Proporciona funciones.

Propuesta por un comité conformado de especialistas, vendedores y usuarios de HPC:
IBM, Intel, TMC, Meiko, Cray, Convex, Ncube
PVM, p4, Zipcode, TCGMSG, Chameleon, Express, Linda
Especialistas: ARCO, ANL, UC Santa Barbara, Convex, GMD, Syracuse University, Cray Research, LANL, Michigan State University, IBM, Oregon Grad Inst, Intel, NOAA, University of New Mexico, KAI, NSF, Mississippi State University, Meiko, ORNL, U of Southampton, NAG, PNL, Univeristy of Colorado, nCUBE, Sandia, Yale U, ParaSoft, SDSC, University of Tennessee, Shell, SRC, University of Maryland, TMC, Western Michigan Univeristy, University of Edinburgh, Cornell University, Rice University, University of San Francisco

Objetivo: desarrollar un estándar portable y eficiente, para programación paralela.

Monografias.com
MPIIntroducción. ¿Qué es MPI?
Fue diseñado para HPC sobre computadoras masivamente paralelas y clusters.( Memoria distribuida).

Paralelismo explícito ( definido y controlado en su totalidad por el programador)

Modelo de programa: SPMD

Único mecanismo de comunicación: MP.

Existen implementaciones libres y algunas particulares para ciertas plataformas.
MPICH, LAM, OpenMPI, winmpich.

MPI se puede usar con: C, C++, Fortran 77/90/95.

Java(?), más información : mpiJava, Java grande.

Monografias.com
MPIIntroducción. ¿Qué es MPI?
Actualmente es muy maduro, fácil de entender, eficiente y existe mucho software alrededor de MPI.

Características de MPI-1.1 (1995)
Modular, portable, heterogeneo, comunicaciones seguras, subgrupos, topologías, herramientas para medición de desempeño, comunicación punto a punto, comunicación colectiva.

Características de MPI-1.2 y MPI-2 (1997)
Extensiones, aclaraciones y correcciones de MPI-1.1.
MPI-2: manejo y creación de procesos, operaciones colectivas extendidas, interfases externas, entrada/salida, language bindings.

MPICH2 (http://www.mcs.anl.gov/research/projects/mpich2)

Monografias.com
MPIIntroducción. ¿Qué es MPI?
¿Cuando usar MPI?
Si se requiere un programa paralelo, portable y de buen desempeño.

¿Cuando NO usar MPI?
No se requiere paralelismo.
Cuando se puede usar HPF, OpenMP, Threads (POSIX, Java, etc.).

Monografias.com
MPIGetting started
C : Los nombres de todas las funciones de MPI comienzan con el prefijo MPI_. Los tipos y funciones definidas en MPI tienen una letra mayúscula después del prefijo; las letras siguientes son minúsculas.

C++ : Todas las funciones y clases estan en el espacio de nombres MPI, de tal manera que para referirnos a una función de MPI se usa MPI::Xxxxx.

Fortran : Los nombres de todas las funciones de MPI comienzan con el prefijo MPI_ y todas las demás letras son mayúsculas.

Monografias.com
MPIGetting started
mpi.h y mpif.h proveen de las definiciones básicas de MPI (funciones y tipos).

Para iniciar MPI se usa:
int MPI_Init(int *argc, char **argv); (C)
void MPI::Init(int& argc, char**& argv); (C++)
INTEGER IERR y MPI_INIT(IERR) (Fortran)

Para finalizar MPI se usa:
int MPI_Finalize(void); (C)
void MPI::Finalize(); (C++)
INTEGER IERR y MPI_FINALIZE(IERR) (Fortran)

Monografias.com
MPIGetting started. Hello world con C
#include
#include
int main(int argc, char *argv[])
{
int rank, size,tam;
char Name[MPI_MAX_PROCESSOR_NAME];
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Comm_size(MPI_COMM_WORLD, &size);
MPI_Get_processor_name(Name,&tam);
printf("Hello world from %s! I am %d of %dn", Name, rank, size);
MPI_Finalize();
return 0;
}

Monografias.com
MPIGetting started. Hello world con C++
#include
#include
using namespace std;
int main(int argc, char *argv[])
{
int rank, size;
MPI::Init(argc, argv);
rank = MPI::COMM_WORLD.Get_rank();
size = MPI::COMM_WORLD.Get_size();
cout << "Hello world! I am " << rank << " of "<< size << endl;
MPI::Finalize();
return 0;
}

Monografias.com
MPIGetting started. Hello world con F
program main
include ’mpif.h’
integer rank, size, ierr
call MPI_INIT(ierr)
call MPI_COMM_RANK(MPI_COMM_WORLD, rank, ierr)
call MPI_COMM_SIZE(MPI_COMM_WORLD, size, ierr)
print *, ’Hello world! I am ’, rank , ’ of ’, size
call MPI_FINALIZE(ierr)
stop
end

Monografias.com
MPIGetting started.
MPI_INIT : La versión de C/C++ acepta los argumentos argc y argv que proveen de argumentos main().

Casi todas las rutinas de Fortran tienen un código entero de error como su último argumento.

En el caso de C/C++ dichas funciones regresan un entero como código de error.

No se garantiza interoperabilidad entre lenguajes.

Programas que mezclan lenguajes funcionarán siempre y cuando solo uno de ellos use MPI.

Todas las funciones que no son de MPI corren de manera local:
Por ejemplo: printf() se ejecuta sobre cada procesador

Monografias.com
MPIGetting started.
Al momento de correr el programa una copia del programa empieza a ejecutarse en cada uno de los nodos seleccionados.
En la figura corre en size=3 nodos.
Cada proceso obtiene un número de rank individual, entre 0 y size-1.
En general podría haber más de un “proceso” en cada “procesador”.

Monografias.com
MPIGetting started.
¿Cuantos procesadores hay?
MPI_COMM_SIZE

¿Quién soy yo?
MPI_COMM_RANK
El rango está en [0,SIZE – 1]

MPI_COMM_WORLD
La comunicación en MPI toma lugar con respecto a grupos de procesos (comunicadores).
El grupo MPI_COMM_WORLD se crea cuando se inicia MPI y contiene todos los procesos de MPI.
MPI_COMM_WORLD es el grupo de procesos por omisión.
Puede haber subgrupos de procesos.

Monografias.com
MPIGetting started.
/* Iniciar MPI */
MPI_Init(&argc, &argv);

/* Saber el número que tengo de proceso*/
MPI_Comm_rank(MPI_COMM_WORLD, &my_rank);

/* Saber el número de procesos totales */
MPI_Comm_size(MPI_COMM_WORLD, &p);

Monografias.com
MPIComunicación punto a punto.
Un buen número de funciones de MPI están dedicadas a la comunicación entre pares de procesos (comunicación punto a punto).

Existen múltiples formas distintas de intercambiar un mensaje entre dos procesos, en función del modelo y el modo de comunicación elegido

Monografias.com
MPIComunicación punto a punto.
MPI define dos modelos de comunicación: bloqueante (blocking) y no bloqueante (nonblocking).

El modelo de comunicación tiene que ver con el tiempo que un proceso pasa bloqueado tras llamar a una función de comunicación, sea ésta de envío o de recepción.
Una función bloqueante mantiene a un proceso bloqueado hasta que la operación solicitada finalice.
Una función no bloqueante supone simplemente “encargar” al sistema la realización de una operación, recuperando el control inmediatamente. El proceso tiene que preocuparse, más adelante, de averiguar si la operación ha finalizado o no.

Partes: 1, 2, 3, 4
 Página anterior Volver al principio del trabajoPágina siguiente 

Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

Categorias
Newsletter